#!/hint/zsh

typeset -ga _ftb_headers=()
local i tmp group_colors
local -i mlen=0 len=0

# Keep ${group} value for preview, binds, etc without displaying group headers
if { -ftb-zstyle -m show-group "quiet" }; then
  return
fi

if (( $#_ftb_groups == 1 )) && { ! -ftb-zstyle -m single-group "header" }; then
  return
fi

# calculate the max column width
for i in $_ftb_groups; do
  (( $#i > mlen )) && mlen=$#i
done
mlen+=1

-ftb-zstyle -a group-colors group_colors || group_colors=($_ftb_group_colors)

for (( i=1; i<=$#_ftb_groups; i++ )); do
  [[ $_ftb_groups[i] == "__hide__"* ]] && continue

  if (( len + $#_ftb_groups[i] > COLUMNS - 5 )); then
    _ftb_headers+=$tmp
    tmp='' && len=0
  fi
  if (( len + mlen > COLUMNS - 5 )); then
    # the last column doesn't need padding
    _ftb_headers+=$tmp$group_colors[i]$_ftb_groups[i]$'\033[00m'
    tmp='' && len=0
  else
    tmp+=$group_colors[i]${(r:$mlen:)_ftb_groups[i]}$'\033[00m'
    len+=$mlen
  fi
done
(( $#tmp )) && _ftb_headers+=$tmp
